package com.molichuxing.gateway.bff.car.services;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.gateway.bff.car.entity.request.modify.CarCommercialInsuranceModifyVo;
import com.molichuxing.gateway.bff.car.entity.request.modify.CarCompulsoryInsuranceModifyVo;
import com.molichuxing.gateway.bff.car.entity.request.modify.YearlyInspectionModifyVo;
import com.molichuxing.gateway.bff.car.entity.response.CarInsuranceDetailVo;
import com.molichuxing.gateway.bff.car.entity.response.CarInsuranceVo;
import com.molichuxing.gateway.bff.car.entity.response.CarYearlyInspectVo;
import com.molichuxing.gateway.bff.car.entity.response.YearlyInspectionVo;
import com.molichuxing.gateway.property.OSSFileFolderEnum;
import com.molichuxing.gateway.utils.entity.UserEntity;
import com.molichuxing.services.business.dto.request.modify.CarCommercialInsuranceModifyDto;
import com.molichuxing.services.business.dto.request.modify.CarCompulsoryInsuranceModifyDto;
import com.molichuxing.services.business.dto.response.CarInsuranceDetailDto;
import com.molichuxing.services.business.dto.response.CarInsuranceDto;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 年检BFF
 * @author xuelin yi
 */
public interface InsuranceBffService {

	/**
	 * 根据条件分页查询交强险信息
	 * code 保单号
	 * licencePlate 车牌
	 * vin 车架号
	 * insuranceCompanyId 保险公司ID
	 * insureStartTime 投保开始时间
	 * insureEndTime 投保结束时间
	 * beginStartTime 起保开始时间
	 * beginEndTime 起保结束时间
	 * endStartTime 终保开始时间
	 * endEndTime 终保结束时间
	 * @param mapParam
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	public Paged<CarInsuranceVo> getInsurancePage(Map<String, Object> mapParam, Integer pageNum, Integer pageSize);


	/**
	 * 根据车辆id获取保险信息
	 * @param carId
	 * @param type
	 * @return
	 */
	public List<CarInsuranceVo> getInsuranceList(Integer carId, Integer type);

	/**
	 * 根据保险ID查询保险信息
	 * @param insuranceId
	 * @return
	 */
	public CarInsuranceDetailVo getInsuranceById(int insuranceId);

	/**
	 * 根据交强险ID修改交强险信息
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyCompulsoryInsurance(CarCompulsoryInsuranceModifyVo modifyDto) throws Exception;

	/**
	 * 根据商业险ID修改商业险信息
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyCommercialInsurance(CarCommercialInsuranceModifyVo modifyDto) throws Exception;

	/**
	 * 导入交强险信息(excel)
	 * @return
	 */
	public Boolean uploadInsuranceExcelFile(MultipartFile excelFile, UserEntity currentLoginUser) throws Exception;

	/**
	 * 导入交强险图片(pdf)
	 * @return
	 */
	public Boolean uploadInsurancePdfFile(MultipartFile pdfFile, UserEntity currentLoginUser, OSSFileFolderEnum folder) throws Exception;

	/**
	 * 导入商业险信息（excel）
	 * @param currentLoginUser
	 * @return
	 */
	public Boolean uploadInsuranceCommercialExcelFile(MultipartFile excelFile, UserEntity currentLoginUser) throws Exception;
}
